package br.bri.gerenciadores;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;

public class GerenciadorCSV {

	/**
	 * Metodo responsavel por ler um arquivo .csv e retornar um ArrayList de
	 * HashMap<String, String> de acordo com os descritos do arquivo, presentes
	 * na primeira linha;4
	 * @param pathArq Nome do arquivo considerado para leitura;
	 * @return ArrayList com HashMap de String referentes aos descritores;
	 */
	public static ArrayList<HashMap<String, String>> lerCSV(Boolean descritoresPresentes, String pathArq) {
		ArrayList<HashMap<String, String>> resultado = new ArrayList<HashMap<String, String>>();

		String linha;
		String partes[];
		String descritores[] = null;

		try {
			//BufferedReader br = new BufferedReader(new FileReader(pathArq));
			BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(new File(pathArq)), "UTF-8"));
			if (br.ready() && descritoresPresentes) {
				// Na primeira linha estao presentes os descritores;
				linha = br.readLine();				
				partes = linha.split(";");
				descritores = new String[partes.length];
				for (int i = 0; i < partes.length; i++) {
					descritores[i] = partes[i].replace("\"", "").toLowerCase();
				}
			}

			// Serao lidos as linhas com os dados;
			while (br.ready()) {				
				HashMap<String, String> valores = new HashMap<String, String>();
				linha = br.readLine();
				partes = linha.split(";");				
				for (int i = 0; i < partes.length; i++) {
					partes[i] = partes[i].replace("\"", "");
					valores.put(descritores[i], partes[i]);
				}
				resultado.add(valores);
			}
			br.close();
		} catch (IOException ioe) {
			ioe.printStackTrace();
		}
		return resultado;
	}

}
